fix: real SHA-pinning check, real Justfile targets, and docs that match the code - #144
Merged
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three independent commits, each droppable on its own. Two fix gates that could never fail; one fixes documentation that actively misdirects.
1.
docs:— two files misstate the code they describePROOF-NEEDS.mdClaimed "1
Admittedinproofs/coq/lambda/LambdaCNO.v(y_not_cno)". Measured againstabsolute-zero @87902bb7:Zero
Admitted. Twenty-threeAxioms across 6 files. The old wording was wrong in both directions — it overstated the incompleteness and understated the trusted base 23×.y_not_cnois a KEPT AXIOM with a written rationale (LambdaCNO.v:388-399), not an unproven hole — and it is not the "concrete, closable proof obligation" the old text claimed. The in-source note explains it needs an invariant closed under the full reduction congruence, or a coinductive/step-indexed argument.The doc now defers to the AXIOM AUDIT already in
physics/LandauerDerivation.v, which is notably self-critical — it records thatcno_zero_energy_dissipation_derivedis an axiom despite its_derivedname, and that the triage docs' "DISCHARGE" marks are inaccurate.Promoted to the top of "What Needs Proving" — the audit's own SOUNDNESS WARNINGS:
prob_nonnegandprob_normalizedare false over unconstrained function-type distributions, andshannon_entropy_maximum's inequality is backwards (asserts uniform minimises entropy). All three are currently unused — cheap now, expensive later.aletheia/CLAUDE.mdSaid "all core logic lives in
src/main.rs(~950 lines)" and "don't split into modules unless >1000 lines". It has been 5 modules / 995 lines for a while,main.rsat 121. That instruction would tell the next agent to undo the existing structure.Also corrected: 23 workflows → 16;
flake.nixlisted but absent; 18 integration tests → 32. Added a prominent warning that those 16 nested workflows have never run (root-only discovery) — the fault that let this crate stay uncompilable for a month.2.
fix(aletheia):— the SHA-pinning check could never failcontains("@v")impliescontains("@"), so the second clause is always false andhas_unpinnedcould never be set. Proven before changing anything:This is aletheia's Silver-level "GitHub Actions SHA pinning" check — and pointedly, the exact check that would have caught
SonarSource/sonarqube-scan-action@master, the unpinned action that broke this repo's Governance and CodeQL in #139.Replaced with
uses_line_is_pinned, requiring 40 hex chars after the final@, which also:- uses:form (the estate's existing linter anchors to line-start and misses it)# v7.0.1provenance comment, so a correct pin with a stale comment isn't a false positive./…local actions/reusables anddocker://refsAlso replaced
assert!(true)intest_file_existswith a real assertion, anchored onenv!("CARGO_MANIFEST_DIR")so it is deterministic regardless of CWD.Verified: 29 unit tests (was 26) ·
cargo fmt --checkclean · clippy 25 → 23. End-to-endcargo run -- .now reports[FAIL] GitHub Actions SHA pinning, correctly finding the one genuinely unpinned action — where before the fix it reported a pass.Refs #125.
3.
fix(#99):— rootJustfilewas a fake gatebuild: @echo "Build not configured yet"build,test,fmt,lint,cleanall printed a string and exited 0. Wired to the same commands rootrust-ci.ymlruns, in the same order, sojust checkmeans what CI means.Two deliberate limits, documented in the recipes so nobody "fixes" them:
testis--binsonly — the integration suite is a spec for a CLI that doesn't exist; 27/29 fail by design (aletheia: 27/29 integration tests fail — main.rs never wires up the CLI surface #124). Adding--testswould make the bar green by breaking it.lintis not yet-D warnings(aletheia: clippy -D warnings has 25 findings — add as blocking gate once clean #125). When that closes it must be added here and torust-ci.ymltogether, so local and CI never disagree.Verified by running them, not reading them:
just deps-check→OK: zero dependencies;just test→ 29 passed;just check→ exit 0.And verified the gate can actually fail — appending badly-formatted Rust makes
just fmtexit 1 whilejust buildstill exits 0; reverting restores 0. A gate nobody has watched fail is not a gate.Closes #99.
Not in this PR
guix.scmidentity/licence clobber — separate, more urgent: fix: restore guix.scm identity and licence (squisher-corpus clobber is live on main) #143🤖 Generated with Claude Code